home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CICA 1993 April
/
CICA MS Windows - April 1993.iso
/
unzipped
/
util
/
wdasm15
/
hello1.asm
< prev
next >
Wrap
Assembly Source File
|
1993-03-02
|
21KB
|
1,212 lines
TITLE WDASM Example Program
.286
.MODEL SMALL
INCLUDE HELLO.INC
EXTRN DefWindowProc:FAR
EXTRN GetMessage:FAR
EXTRN TranslateMessage:FAR
EXTRN FatalExit:FAR
EXTRN DispatchMessage:FAR
EXTRN GetVersion:FAR
EXTRN GetDosEnvironment:FAR
EXTRN LocalAlloc:FAR
EXTRN LocalRealloc:FAR
EXTRN LocalFree:FAR
EXTRN FatalAppExit:FAR
EXTRN LocalSize:FAR
EXTRN UpdateWindow:FAR
EXTRN GlobalRealloc:FAR
EXTRN GlobalSize:FAR
EXTRN InitApp:FAR
EXTRN PostQuitMessage:FAR
EXTRN LockSegment:FAR
EXTRN UnlockSegment:FAR
EXTRN WaitEvent:FAR
EXTRN GetClientRect:FAR
EXTRN GetModuleFileName:FAR
EXTRN BeginPaint:FAR
EXTRN EndPaint:FAR
EXTRN CreateWindow:FAR
EXTRN ShowWindow:FAR
EXTRN LoadCursor:FAR
EXTRN LoadIcon:FAR
EXTRN RegisterClass:FAR
EXTRN InitTask:FAR
EXTRN GetStockObject:FAR
EXTRN DrawText:FAR
EXTRN Dos3Call:FAR
EXTRN __winflags:FAR
.CODE
Procedure0000 PROC NEAR
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
Procedure0000 ENDP
Procedure0010 PROC NEAR
PUSH BP
MOV BP, SP
MOV AX, 002EH
CALL NEAR PTR Procedure042A
CMP WORD PTR [BP+10], 0
JZ L0022H
JMP NEAR PTR L008AH
L0022H: MOV WORD PTR [BP-46], 0003H
MOV WORD PTR [BP-44], LROFFSET WNDPROC
MOV WORD PTR [BP-42], SEG WNDPROC
MOV WORD PTR [BP-40], 0000H
MOV WORD PTR [BP-38], 0000H
MOV AX, WORD PTR [BP+12]
MOV WORD PTR [BP-36], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadIcon
MOV WORD PTR [BP-34], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadCursor
MOV WORD PTR [BP-32], AX
PUSH 0
CALL FAR PTR GetStockObject
MOV WORD PTR [BP-30], AX
MOV WORD PTR [BP-28], 0000H
MOV WORD PTR [BP-26], 0000H
MOV AX, 0010H
MOV DX, DS
MOV WORD PTR [BP-24], AX
MOV WORD PTR [BP-22], DX
LEA AX, WORD PTR [BP-46]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR RegisterClass
L008AH: MOV AX, 0010H
MOV DX, DS
PUSH DX
PUSH AX
MOV AX, 00C2H
MOV DX, DS
PUSH DX
PUSH AX
PUSH 00CFH
PUSH 0
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 0
PUSH 0
PUSH WORD PTR [BP+12]
PUSH 0
PUSH 0
CALL FAR PTR CreateWindow
MOV WORD PTR [BP-2], AX
PUSH AX
PUSH WORD PTR [BP+4]
CALL FAR PTR ShowWindow
PUSH WORD PTR [BP-2]
CALL FAR PTR UpdateWindow
L00CDH: LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 0
PUSH 0
PUSH 0
CALL FAR PTR GetMessage
AND AX, AX
JZ L00FEH
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR TranslateMessage
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR DispatchMessage
JMP SHORT L00CDH
NOP
L00FEH: MOV AX, WORD PTR [BP-16]
LEAVE
RET 000AH
Procedure0010 ENDP
Procedure0105 PROC NEAR
NOP
Procedure0105 ENDP
WNDPROC PROC FAR PUBLIC
PUSH DS
POP AX
NOP
INC BP
PUSH BP
MOV BP, SP
PUSH DS
MOV DS, AX
MOV AX, 002CH
CALL NEAR PTR Procedure042A
PUSH SI
PUSH DI
MOV SI, WORD PTR [BP+14]
MOV AX, WORD PTR [BP+12]
JMP NEAR PTR L017AH
NOP
L0122H: PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR BeginPaint
MOV DI, AX
PUSH SI
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR GetClientRect
PUSH DI
MOV AX, 00DFH
MOV DX, DS
PUSH DX
PUSH AX
PUSH -1
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 37
CALL FAR PTR DrawText
PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR EndPaint
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
L016AH: PUSH 0
CALL FAR PTR PostQuitMessage
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
JMP SHORT L0187H
L017AH: CMP AX, 0002H
JZ L016AH
CMP AX, 000FH
JNZ L0187H
JMP NEAR PTR L0122H
L0187H: PUSH SI
PUSH WORD PTR [BP+12]
PUSH WORD PTR [BP+10]
PUSH WORD PTR [BP+8]
PUSH WORD PTR [BP+6]
CALL FAR PTR DefWindowProc
JMP SHORT L019FH
NOP
MOV WORD PTR [BP+14], SI
L019FH: POP DI
POP SI
SUB BP, 2
MOV SP, BP
POP DS
POP BP
DEC BP
RETF 000AH
WNDPROC ENDP
Procedure01AC PROC NEAR
L01ACH DW LROFFSET __winflags
L01AEH: MOV AL, -1
PUSH AX
CALL NEAR PTR Procedure034E
L01B4H:: XOR BP, BP
PUSH BP
CALL FAR PTR InitTask
OR AX, AX
JZ L01AEH
MOV WORD PTR D0064H, ES
ADD CX, 0100H
JB L01AEH
MOV WORD PTR D002EH, CX
MOV WORD PTR D0030H, SI
MOV WORD PTR D0032H, DI
MOV WORD PTR D0034H, BX
MOV WORD PTR D0036H, ES
MOV WORD PTR D0038H, DX
CALL FAR PTR GetVersion
MOV WORD PTR D0066H, AX
MOV AH, 48
TEST WORD PTR CS:L01ACH, 0001H
JZ L01FCH
CALL FAR PTR Dos3Call
JMP SHORT L01FEH
L01FCH: INT 0021H
L01FEH: MOV WORD PTR D0068H, AX
TEST WORD PTR CS:L01ACH, 0001H
JNZ L020FH
MOV AL, 0
MOV BYTE PTR D006BH, AL
L020FH: XOR AX, AX
PUSH AX
CALL FAR PTR WaitEvent
PUSH WORD PTR D0032H
CALL FAR PTR InitApp
OR AX, AX
JZ L01AEH
CALL NEAR PTR Procedure0268
CALL NEAR PTR Procedure047E
CALL NEAR PTR Procedure05FC
CALL NEAR PTR Procedure085C
PUSH WORD PTR D00A0H
PUSH WORD PTR D009EH
PUSH WORD PTR D009CH
CALL NEAR PTR Procedure024C
ADD SP, 6
PUSH AX
CALL NEAR PTR Procedure0347
MOV AX, 0015H
JMP NEAR PTR L0683H
Procedure01AC ENDP
Procedure024C PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR D0032H
PUSH WORD PTR D0030H
PUSH WORD PTR D0036H
PUSH WORD PTR D0034H
PUSH WORD PTR D0038H
CALL NEAR PTR Procedure0010
POP BP
RET
Procedure024C ENDP
Procedure0268 PROC NEAR
MOV AX, 3500H
TEST WORD PTR CS:L01ACH, 0001H
JZ L027BH
CALL FAR PTR Dos3Call
JMP SHORT L027DH
L027BH: INT 0021H
L027DH: MOV WORD PTR D0050H, BX
MOV WORD PTR D0052H, ES
PUSH CS
POP DS
MOV AX, 2500H
MOV DX, 067EH
TEST WORD PTR CS:L01ACH, 0001H
JZ L029DH
CALL FAR PTR Dos3Call
JMP SHORT L029FH
L029DH: INT 0021H
L029FH: PUSH SS
POP DS
MOV CX, WORD PTR D00B8H
JCXZ L02D0H
MOV ES, WORD PTR D0064H
MOV SI, WORD PTR ES:D002CH
MOV AX, WORD PTR D00BAH
MOV DX, WORD PTR D00BCH
XOR BX, BX
CALL DWORD PTR D00B6H
JAE L02C2H
JMP NEAR PTR L0424H
L02C2H: MOV AX, WORD PTR D00BEH
MOV DX, WORD PTR D00C0H
MOV BX, 0003H
CALL DWORD PTR D00B6H
L02D0H: MOV ES, WORD PTR D0064H
MOV CX, WORD PTR ES:D002CH
JCXZ L0319H
MOV ES, CX
XOR DI, DI
L02DFH: CMP BYTE PTR ES:[DI], 0
JZ L0319H
MOV CX, 000DH
MOV SI, 0042H
REPE CMPSB
JZ L02FAH
MOV CX, 7FFFH
XOR AX, AX
REPNE SCASB
JNZ L0319H
JMP SHORT L02DFH
L02FAH: PUSH ES
PUSH DS
POP ES
POP DS
MOV SI, DI
MOV DI, 0074H
MOV CL, 4
L0305H: LODSB
SUB AL, 65
JB L0317H
SHL AL, CL
XCHG DX, AX
LODSB
SUB AL, 65
JB L0317H
OR AL, DL
STOSB
JMP SHORT L0305H
L0317H: PUSH SS
POP DS
L0319H: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03EB
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03FA
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03EB
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03EB
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03FA
RET
Procedure0268 ENDP
Procedure0347 PROC NEAR
PUSH BP
MOV BP, SP
XOR CX, CX
JMP SHORT L0368H
Procedure0347 ENDP
Procedure034E PROC NEAR
PUSH BP
MOV BP, SP
MOV CX, 0001H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0100H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0101H
L0368H:: MOV BYTE PTR D00A9H, CH
PUSH CX
OR CL, CL
JNZ L038DH
MOV SI, 024CH
MOV DI, 024CH
CALL NEAR PTR Procedure03EB
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03EB
MOV SI, WORD PTR [BP+4]
PUSH SI
CALL NEAR PTR Procedure085C
ADD SP, 2
L038DH: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03EB
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Procedure03FA
CALL NEAR PTR Procedure03C2
POP AX
OR AH, AH
JNZ L03BEH
MOV AX, WORD PTR [BP+4]
MOV AH, 76
TEST WORD PTR CS:L01ACH, 0001H
JZ L03BCH
CALL FAR PTR Dos3Call
JMP SHORT L03BEH
L03BCH: INT 0021H
L03BEH: POP DI
POP SI
POP BP
RET
Procedure034E ENDP
Procedure03C2 PROC NEAR
MOV CX, WORD PTR D00B8H
JCXZ L03CFH
MOV BX, 0002H
CALL DWORD PTR D00B6H
L03CFH: PUSH DS
LDS DX, DWORD PTR D0050H
MOV AX, 2500H
TEST WORD PTR CS:L01ACH, 0001H
JZ L03E7H
CALL FAR PTR Dos3Call
JMP SHORT L03E9H
L03E7H: INT 0021H
L03E9H: POP DS
RET
Procedure03C2 ENDP
Procedure03EB PROC NEAR
L03EBH: CMP SI, DI
JAE L03F9H
DEC DI
DEC DI
MOV CX, WORD PTR [DI]
JCXZ L03EBH
CALL CX
JMP SHORT L03EBH
L03F9H: RET
Procedure03EB ENDP
Procedure03FA PROC NEAR
L03FAH: CMP SI, DI
JAE L040CH
SUB DI, 4
MOV AX, WORD PTR [DI]
OR AX, WORD PTR [DI+2]
JZ L03FAH
CALL DWORD PTR [DI]
JMP SHORT L03FAH
L040CH: RET
Procedure03FA ENDP
Procedure040D PROC NEAR
L040DH DB 0000H
Procedure040D ENDP
Procedure040E PROC NEAR
PUSH BP
MOV BP, SP
MOV AX, 00FCH
PUSH AX
CALL NEAR PTR Procedure06ED
MOV AX, 00FFH
PUSH AX
CALL NEAR PTR Procedure06ED
MOV SP, BP
POP BP
RET
Procedure040E ENDP
Procedure0423 PROC NEAR
L0423H DB 0000H
L0424H:: MOV AX, 0002H
JMP NEAR PTR L0683H
Procedure0423 ENDP
Procedure042A PROC NEAR
POP BX
INC AX
AND AL, -2
SUB AX, SP
JAE L0477H
NEG AX
CMP WORD PTR SS:D000AH, AX
JA L0477H
CMP WORD PTR SS:D000CH, AX
JBE L0446H
MOV WORD PTR D000CH, AX
L0446H: MOV SP, AX
JMP BX
POP BX
POP DX
INC AX
AND AL, -2
SUB AX, SP
JAE L046CH
NEG AX
CMP WORD PTR SS:D000AH, AX
JA L046CH
CMP WORD PTR SS:D000CH, AX
JBE L0467H
MOV WORD PTR D000CH, AX
L0467H: MOV SP, AX
PUSH DX
PUSH BX
RETF
Procedure042A ENDP
Procedure046C PROC NEAR
L046CH:: MOV DX, WORD PTR SS:D00ACH
INC DX
JZ L0477H
JMP WORD PTR D00ACH
L0477H:: MOV AX, 0000H
JMP NEAR PTR L0683H
L047DH DB 0000H
Procedure046C ENDP
Procedure047E PROC NEAR
POP WORD PTR D00AEH
MOV AX, 0104H
MOV CX, 0008H
CALL NEAR PTR Procedure071E
MOV WORD PTR D00A4H, DX
MOV WORD PTR D00A2H, AX
PUSH DX
PUSH AX
PUSH WORD PTR D0032H
PUSH DX
PUSH AX
MOV AX, 0104H
PUSH AX
CALL FAR PTR GetModuleFileName
POP BX
POP ES
ADD BX, AX
MOV BYTE PTR ES:[BX], 0
MOV DX, 0001H
MOV DI, 0001H
MOV SI, 0081H
MOV DS, WORD PTR D0064H
L04B8H: LODSB
CMP AL, 32
JZ L04B8H
CMP AL, 9
JZ L04B8H
CMP AL, 13
JZ L0534H
OR AL, AL
JZ L0534H
INC DI
L04CAH: DEC SI
L04CBH: LODSB
CMP AL, 32
JZ L04B8H
CMP AL, 9
JZ L04B8H
CMP AL, 13
JZ L0534H
OR AL, AL
JZ L0534H
CMP AL, 34
JZ L0504H
CMP AL, 92
JZ L04E7H
INC DX
JMP SHORT L04CBH
L04E7H: XOR CX, CX
L04E9H: INC CX
LODSB
CMP AL, 92
JZ L04E9H
CMP AL, 34
JZ L04F7H
ADD DX, CX
JMP SHORT L04CAH
L04F7H: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L04CBH
JMP SHORT L0504H
L0503H: DEC SI
L0504H: LODSB
CMP AL, 13
JZ L0534H
OR AL, AL
JZ L0534H
CMP AL, 34
JZ L04CBH
CMP AL, 92
JZ L0518H
INC DX
JMP SHORT L0504H
L0518H: XOR CX, CX
L051AH: INC CX
LODSB
CMP AL, 92
JZ L051AH
CMP AL, 34
JZ L0528H
ADD DX, CX
JMP SHORT L0503H
L0528H: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L0504H
JMP SHORT L04CBH
L0534H: PUSH SS
POP DS
MOV WORD PTR D009CH, DI
ADD DX, DI
INC DI
SHL DI, 1
ADD DX, DI
INC DX
AND DL, -2
SUB SP, DX
MOV AX, SP
MOV WORD PTR D009EH, AX
MOV BX, AX
ADD DI, BX
PUSH SS
POP ES
LDS SI, DWORD PTR D00A2H
MOV WORD PTR SS:[BX], SI
INC BX
INC BX
MOV DS, WORD PTR SS:D0064H
MOV SI, 0081H
JMP SHORT L0568H
L0565H: XOR AX, AX
STOSB
L0568H: LODSB
CMP AL, 32
JZ L0568H
CMP AL, 9
JZ L0568H
CMP AL, 13
JZ L05F1H
OR AL, AL
JZ L05F1H
MOV WORD PTR SS:[BX], DI
INC BX
INC BX
L057EH: DEC SI
L057FH: LODSB
CMP AL, 32
JZ L0565H
CMP AL, 9
JZ L0565H
CMP AL, 13
JZ L05EEH
OR AL, AL
JZ L05EEH
CMP AL, 34
JZ L05BBH
CMP AL, 92
JZ L059BH
STOSB
JMP SHORT L057FH
L059BH: XOR CX, CX
L059DH: INC CX
LODSB
CMP AL, 92
JZ L059DH
CMP AL, 34
JZ L05ADH
MOV AL, 92
REP STOSB
JMP SHORT L057EH
L05ADH: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L05BBH
MOV AL, 34
STOSB
JMP SHORT L057FH
L05BAH: DEC SI
L05BBH: LODSB
CMP AL, 13
JZ L05EEH
OR AL, AL
JZ L05EEH
CMP AL, 34
JZ L057FH
CMP AL, 92
JZ L05CFH
STOSB
JMP SHORT L05BBH
L05CFH: XOR CX, CX
L05D1H: INC CX
LODSB
CMP AL, 92
JZ L05D1H
CMP AL, 34
JZ L05E1H
MOV AL, 92
REP STOSB
JMP SHORT L05BAH
L05E1H: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L057FH
MOV AL, 34
STOSB
JMP SHORT L05BBH
L05EEH: XOR AX, AX
STOSB
L05F1H: PUSH SS
POP DS
MOV WORD PTR [BX], 0000H
JMP WORD PTR D00AEH
L05FBH DB 0000H
Procedure047E ENDP
Procedure05FC PROC NEAR
PUSH BP
MOV BP, SP
PUSH DS
CALL FAR PTR GetDosEnvironment
OR AX, AX
JZ L060BH
MOV DX, AX
L060BH: MOV BX, DX
MOV ES, DX
XOR AX, AX
XOR SI, SI
XOR DI, DI
MOV CX, 0FFFFH
OR BX, BX
JZ L062AH
CMP BYTE PTR ES:D0000H, 0
JZ L062AH
L0624H: REPNE SCASB
INC SI
SCASB
JNZ L0624H
L062AH: MOV AX, DI
INC AX
AND AL, -2
INC SI
MOV DI, SI
SHL SI, 1
MOV CX, 0009H
CALL NEAR PTR Procedure071E
PUSH AX
MOV AX, SI
CALL NEAR PTR Procedure071E
MOV WORD PTR D00A0H, AX
PUSH ES
PUSH DS
POP ES
POP DS
MOV CX, DI
MOV BX, AX
XOR SI, SI
POP DI
DEC CX
JCXZ L0677H
L0651H: MOV AX, WORD PTR [SI]
CMP AX, WORD PTR SS:D0042H
JNZ L066AH
PUSH CX
PUSH SI
PUSH DI
MOV DI, 0042H
MOV CX, 0006H
REPE CMPSW
POP DI
POP SI
POP CX
JZ L066FH
L066AH: MOV WORD PTR ES:[BX], DI
INC BX
INC BX
L066FH: LODSB
STOSB
OR AL, AL
JNZ L066FH
LOOP L0651H
L0677H: MOV WORD PTR ES:[BX], CX
POP DS
POP BP
RET
Procedure05FC ENDP
Procedure067D PROC NEAR
L067DH DB 0000H
PUSH SS
POP DS
MOV AX, 0003H
L0683H:: PUSH AX
PUSH AX
CALL NEAR PTR Procedure040E
CALL NEAR PTR Procedure06ED
CALL NEAR PTR Procedure06C2
XOR BX, BX
OR AX, AX
JZ L06B1H
MOV DI, AX
MOV AX, 0009H
CMP BYTE PTR [DI], 77
JNZ L06A1H
MOV AX, 000FH
L06A1H: ADD DI, AX
PUSH DI
PUSH DS
POP ES
MOV AL, 13
MOV CX, 0022H
REPNE SCASB
MOV BYTE PTR [DI-1], BL
POP AX
L06B1H: PUSH BX
PUSH DS
PUSH AX
CALL FAR PTR FatalAppExit
MOV AX, 00FFH
PUSH AX
CALL FAR PTR FatalExit
Procedure067D ENDP
Procedure06C2 PROC NEAR
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
PUSH DS
POP ES
MOV DX, WORD PTR [BP+4]
MOV SI, 0102H
L06CFH: LODSW
CMP AX, DX
JZ L06E4H
INC AX
XCHG SI, AX
JZ L06E4H
XCHG DI, AX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
MOV SI, DI
JMP SHORT L06CFH
L06E4H: XCHG SI, AX
POP DI
POP SI
MOV SP, BP
POP BP
RET 0002H
Procedure06C2 ENDP
Procedure06ED PROC NEAR
PUSH BP
MOV BP, SP
PUSH DI
CMP WORD PTR D00B2H, 0
JZ L0716H
PUSH WORD PTR [BP+4]
CALL NEAR PTR Procedure06C2
OR AX, AX
JZ L0716H
XCHG DX, AX
MOV DI, DX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
NOT CX
DEC CX
MOV BX, WORD PTR D006EH
CALL NEAR PTR Procedure0861
L0716H: POP DI
MOV SP, BP
POP BP
RET 0002H
Procedure06ED ENDP
Procedure071D PROC NEAR
L071DH DB 0000H
Procedure071D ENDP
Procedure071E PROC NEAR
PUSH BP
MOV BP, SP
PUSH BX
PUSH ES
PUSH CX
MOV CX, 1000H
XCHG CX, WORD PTR D00B0H
PUSH CX
PUSH AX
CALL NEAR PTR Procedure0868
POP BX
POP WORD PTR D00B0H
POP CX
MOV DX, DS
OR AX, AX
JZ L0740H
POP ES
POP BX
JMP SHORT L0745H
L0740H: MOV AX, CX
JMP NEAR PTR L0683H
L0745H: MOV SP, BP
POP BP
RET
Procedure071E ENDP
Procedure0749 PROC NEAR
L0749H DB 0000H
PUSH CX
PUSH DI
TEST BYTE PTR [BX+2], 1
JZ L07B5H
CALL NEAR PTR Procedure083C
MOV DI, SI
MOV AX, WORD PTR [SI]
TEST AL, 1
JZ L0760H
SUB CX, AX
DEC CX
L0760H: INC CX
INC CX
MOV SI, WORD PTR [BX+4]
OR SI, SI
JZ L07B5H
ADD CX, SI
JAE L0776H
XOR AX, AX
MOV DX, 0FFF0H
JCXZ L07A4H
JMP SHORT L07B5H
L0776H: PUSH SS
POP ES
MOV AX, WORD PTR D00B0H
CMP AX, 1000H
JZ L0797H
MOV DX, 8000H
L0784H: CMP DX, AX
JB L078EH
SHR DX, 1
JNZ L0784H
JMP SHORT L07B0H
L078EH: CMP DX, 8
JB L07B0H
SHL DX, 1
MOV AX, DX
L0797H: DEC AX
MOV DX, AX
ADD AX, CX
JAE L07A0H
XOR AX, AX
L07A0H: NOT DX
AND AX, DX
L07A4H: PUSH DX
CALL NEAR PTR Procedure07D6
POP DX
JAE L07B8H
CMP DX, -16
JZ L07B5H
L07B0H: MOV AX, 0010H
JMP SHORT L0797H
L07B5H: STC
JMP SHORT L07D3H
L07B8H: MOV DX, AX
SUB DX, WORD PTR ES:[BX+4]
MOV WORD PTR [BX+4], AX
MOV WORD PTR [BX+10], DI
MOV SI, WORD PTR [BX+12]
DEC DX
MOV WORD PTR [SI], DX
INC DX
ADD SI, DX
MOV WORD PTR [SI], 0FFFEH
MOV WORD PTR [BX+12], SI
L07D3H: POP DI
POP CX
RET
Procedure0749 ENDP
Procedure07D6 PROC NEAR
MOV DX, AX
TEST BYTE PTR [BX+2], 4
JZ L07E0H
JMP SHORT L0831H
L07E0H: PUSH DX
PUSH CX
PUSH BX
MOV SI, WORD PTR [BX+6]
MOV BX, WORD PTR CS:L01ACH
XOR CX, CX
OR DX, DX
JNZ L07F8H
TEST BX, 0010H
JNZ L0837H
INC CX
L07F8H: MOV AX, 0022H
TEST BX, 0001H
JNZ L0804H
MOV AX, 0020H
L0804H: PUSH SI
PUSH CX
PUSH DX
PUSH AX
CALL FAR PTR GlobalRealloc
OR AX, AX
JZ L0837H
CMP AX, SI
JNZ L0831H
PUSH SI
CALL FAR PTR GlobalSize
OR DX, AX
JZ L0831H
POP BX
POP CX
POP DX
MOV AX, DX
TEST BYTE PTR [BX+2], 4
JZ L082EH
DEC DX
MOV WORD PTR [BX-2], DX
L082EH: CLC
JMP SHORT L083BH
L0831H: MOV AX, 0012H
JMP NEAR PTR L0683H
L0837H: POP BX
POP CX
POP DX
STC
L083BH: RET
Procedure07D6 ENDP
Procedure083C PROC NEAR
PUSH DI
MOV SI, WORD PTR [BX+10]
CMP SI, WORD PTR [BX+12]
JNZ L0848H
MOV SI, WORD PTR [BX+8]
L0848H: LODSW
CMP AX, -2
JZ L0856H
MOV DI, SI
AND AL, -2
ADD SI, AX
JMP SHORT L0848H
L0856H: DEC DI
DEC DI
MOV SI, DI
POP DI
RET
Procedure083C ENDP
Procedure085C PROC NEAR
PUSH BP
MOV BP, SP
POP BP
RET
Procedure085C ENDP
Procedure0861 PROC NEAR
MOV AX, 0014H
JMP NEAR PTR L0683H
L0867H DB 0000H
Procedure0861 ENDP
Procedure0868 PROC NEAR
PUSH BP
MOV BP, SP
SUB SP, 4
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR LockSegment
MOV AX, 0020H
PUSH AX
CMP WORD PTR [BP+4], 0
JZ L0886H
MOV AX, WORD PTR [BP+4]
JMP SHORT L0889H
L0886H: MOV AX, 0001H
L0889H: PUSH AX
CALL FAR PTR LocalAlloc
MOV WORD PTR [BP-2], AX
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR UnlockSegment
MOV AX, WORD PTR [BP-2]
MOV SP, BP
POP BP
RET
Procedure0868 ENDP
Procedure08A2 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR [BP+4]
CALL FAR PTR LocalFree
MOV SP, BP
POP BP
RET
Procedure08A2 ENDP
Procedure08B1 PROC NEAR
NOP
PUSH BP
MOV BP, SP
SUB SP, 4
CMP WORD PTR [BP+4], 0
JNZ L08CAH
PUSH WORD PTR [BP+6]
CALL NEAR PTR Procedure0868
ADD SP, 2
JMP SHORT L08FEH
NOP
L08CAH: MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR LockSegment
PUSH WORD PTR [BP+4]
CMP WORD PTR [BP+6], 0
JZ L08E2H
MOV AX, WORD PTR [BP+6]
JMP SHORT L08E5H
NOP
L08E2H: MOV AX, 0001H
L08E5H: PUSH AX
MOV AX, 0062H
PUSH AX
CALL FAR PTR LocalRealloc
MOV WORD PTR [BP-2], AX
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR UnlockSegment
MOV AX, WORD PTR [BP-2]
L08FEH: MOV SP, BP
POP BP
RET
Procedure08B1 ENDP
Procedure0902 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR [BP+4]
CALL FAR PTR LocalSize
MOV SP, BP
POP BP
RET
Procedure0902 ENDP
Procedure0911 PROC NEAR
NOP
Procedure0911 ENDP
END L01B4H